#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define rep(i, a, b) for (int i = (a); i <= (b); i++)
#define per(i, a, b) for (int i = (a); i >= (b); i--)
#define endl '\n'
const int N = 1e5 + 5;

int n, m;
int a[N], b[N];
int s[N], t[N];
int c[N];
vector<int> add[N];

struct Bit {
  vector<int> bit;
  int n;
  bool flag;
  Bit(int _n, bool _flag = 0) : n(_n), flag(_flag), bit(_n + 1, 0) {}
  int lowbit(int x) { return x & -x; }
  void update(int x, int d) {
    for (int i = x; i <= n; i += lowbit(i)) {
      if (flag)
        bit[i] = max(bit[i], d);
      else
        bit[i] += d;
    }
  }
  int query(int x) {
    int res = 0;
    for (int i = x; i > 0; i -= lowbit(i)) {
      if (flag)
        res = max(res, bit[i]);
      else
        res += bit[i];
    }
    return res;
  }
};

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> m;
  Bit mxt(n, 1), del(n), del2p(n), kcnt(n);
  set<pii> st;
  rep(i, 1, n) cin >> a[i];
  rep(i, 1, m) cin >> b[i];
  rep(i, 1, n) t[i] = m + 1;
  rep(i, 1, m) t[b[i]] = i;
  per(i, n, 1) {
    s[i] = mxt.query(a[i]);
    if (s[i] && s[i] < t[i]) add[s[i]].push_back(i);
    mxt.update(a[i], t[i]);
  }
  ll sum = n;
  rep(i, 1, n) {
    if (!s[i]) {
      sum += n - a[i] - (n - i);
      st.insert(pii(a[i], i));
      kcnt.update(i, 1);
    }
  }
  cout << sum << ' ';
  rep(i, 1, m) {
    int p = b[i];
    if (s[p] >= t[p]) {
      int r = (--st.lower_bound(pii(a[p], 0)))->second;
      sum -= kcnt.query(r) - kcnt.query(p) + 1;
    } else {
      int tot =
          n - a[p] - (del.query(n) - del.query(a[p]));  // 有多少个比它大的元素
      int r = n - p - (del2p.query(n) - del2p.query(p));  // 右侧有多少个元素
      int l = tot - r;
      sum -= l + 1;
      st.erase(pii(a[p], p));
      kcnt.update(p, -1);
    }
    del.update(a[p], 1);
    del2p.update(p, 1);
    for (int p : add[i]) {
      int tot =
          n - a[p] - (del.query(n) - del.query(a[p]));  // 有多少个比它大的元素
      int r = n - p - (del2p.query(n) - del2p.query(p));  // 右侧有多少个元素
      int l = tot - r;
      sum += l;
      st.insert(pii(a[p], p));
      kcnt.update(p, 1);
    }
    cout << sum << ' ';
  }
  return 0;
}